-
Notifications
You must be signed in to change notification settings - Fork 1k
V2 Spec Additions #945
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v2/main
Are you sure you want to change the base?
V2 Spec Additions #945
Conversation
- Express: cleaner routing/middleware for proxy CRUD endpoints, well-maintained ecosystem - Pino: fastest logger option, JSON-structured logs work well for debugging MCP traffic 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Based on MCPJam Inspector analysis: - Server connection card with status indicators - Resizable panel layouts for Tools/Resources/Prompts screens - Form generation from JSON Schema - Error handling patterns (inline errors, retry count, doc links) Also updates nav links in all spec files to include v2_ux.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
- Add server.json import support (Issue modelcontextprotocol#922) for MCP Registry format - Add History Screen with automatic capture and replay functionality - Add Pino logging rationale with log-as-history architecture - Remove emojis from markdown files, use text alternatives New UX sections added: - Logging Screen (notifications/message, logging/setLevel) - Tasks Screen (tasks/*, notifications/task/statusChanged) - Sampling Panel (sampling/createMessage) - Elicitation Handler (form + URL modes) - Roots Configuration (roots/list) - Experimental Features Panel (raw JSON-RPC tester) Enhanced existing screens: - Tools: annotations, autocomplete, progress indicators, image/audio - Resources: annotations, subscriptions - Prompts: autocomplete - Navigation: ping latency, listChanged indicators 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Implements UI-only prototype for component library evaluation: - Server List home page with server cards - AppLayout with top navigation (Tools, Resources, Prompts, Logs, Tasks, History) - All 7 screen stubs with mock data - ServerCard and StatusIndicator components - Dark theme with Mantine v7 Based on v2_ux.md specification from PR modelcontextprotocol#945. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Implements UI-only prototype for component library evaluation: - Server List home page with server cards - AppLayout with top navigation (Tools, Resources, Prompts, Logs, Tasks, History) - All 7 screen stubs with mock data - ServerCard and StatusIndicator components - Shadcn UI components (Button, Card, Badge, Switch, Input, Select) - Tailwind CSS dark theme Based on v2_ux.md specification from PR modelcontextprotocol#945. Mirror of Mantine prototype for comparison. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
cliffhall
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for all this great work, @olaservo. I added a few thoughts.
| │ [user] │ │ | ||
| │ │ { │ | ||
| │ ○ data.csv │ "name": "my-app", │ | ||
| │ │ "version": "1.0.0" │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps we can split this left pane to have dynamically up to three scrollable regions. If there are only resources, they take up the whole pane. If there are also templates, the pane is split in two. When there are subscriptions, another pane could be added for them.
| │ ☑ DEBUG │ │ | ||
| │ ☑ INFO │ │ | ||
| │ ☑ WARNING │ │ | ||
| │ ☑ ERROR │ │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All the available levels aren't represented here.
| - DEBUG: gray | ||
| - INFO: blue | ||
| - WARNING: yellow | ||
| - ERROR: red |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need colors (or shades) for all levels (debug, info, notice, warning, error, critical, alert, emergency)
| - Display server's experimental capabilities from initialization | ||
| - Toggle client experimental capabilities to advertise | ||
| - Add custom client experimental capabilities | ||
| - **Raw JSON-RPC Tester:** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What if the experimental feature requires custom headers?
| | JSON Schema Type | Form Control | | ||
| |------------------|--------------| | ||
| | `string` | Text input | | ||
| | `string` (enum) | Select dropdown | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With the new spec, we have single select and multi-select enums. The component framework we use will need to support multi-select combobox/select component or we could use checkboxes.
For instance shadcn has both combobox and select, but neither support multiselect, but there is a third party component that does: https://shadcn-multi-select-component.vercel.app/
| ├─────────────────────────────────────────────────────────┤ | ||
| │ npx -y @modelcontextprotocol/server-everything [Copy]│ | ||
| ├─────────────────────────────────────────────────────────┤ | ||
| │ [Server Info] [Edit] [Remove] │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Another thing from the sidebar that hasn't found a home is timeout behavior. That may be something that should be server specific as well. Perhaps we add a [Timeouts] button/modal?
| ├─────────────────────────────────────────────────────────┤ | ||
| │ npx -y @modelcontextprotocol/server-everything [Copy]│ | ||
| ├─────────────────────────────────────────────────────────┤ | ||
| │ [Server Info] [Edit] [Remove] │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on the three above comments, we might also want a [Clone] button for the server card as well, so that it could be configured in different ways, with different headers, metadata, timeouts.
| ├─────────────────────────────────────────────────────────┤ | ||
| │ npx -y @modelcontextprotocol/server-everything [Copy]│ | ||
| ├─────────────────────────────────────────────────────────┤ | ||
| │ [Server Info] [Edit] [Remove] │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And of course there is Auth related settings that could be set per server: Client ID, Client Secret, Scope.
| * [Server List (Home)](#server-list-home) | ||
| * [Server Connection Card](#server-connection-card) | ||
| * [Import server.json Modal](#import-serverjson-modal) | ||
| * [Server Info (Connected)](#server-info-connected) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should also have an OAuth debugger screen or modal.
| ``` | ||
| ┌─────────────────────────────────────────────────────────┐ | ||
| │ [Icon] Server Name v1.0.0 │ | ||
| │ STDIO [●] Connected [Toggle] │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There should be a [OAuth Debug] button that would open a modal or go to a screen for stepping through the oauth flow.
| ├─────────────────────────────────────────────────────────┤ | ||
| │ npx -y @modelcontextprotocol/server-everything [Copy]│ | ||
| ├─────────────────────────────────────────────────────────┤ | ||
| │ [Server Info] [Edit] [Remove] │ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, how to choose connection type is maybe a server specific thing. If the server has its CORS open then you can connect direct, otherwise you'll want to connect via proxy. Maybe this is a dropdown option on this card.
Fixes: #947
Changes:
Methodology:
Other notes: